import {
  IsArray,
  IsInt,
  IsNotEmpty,
  IsOptional,
  IsString,
  Length,
} from 'class-validator';

export class CreateHeroDto {
  @IsString({ message: '英雄名必须是一个字符串' })
  @IsNotEmpty()
  @Length(1, 20, {
    message: '英雄名长度必须在$constraint1到$constraint2之间',
  })
  name: string;

  @IsString({ message: '上线时间必须是一个字符串' })
  @IsNotEmpty()
  landingDate: string;

  @IsString({ message: '版本强度必须是一个字符串' })
  @IsNotEmpty()
  versionStrength: string;

  @IsArray({ message: '英雄定位必须是一个字符串数组' })
  @IsNotEmpty()
  heroLocation: string[];

  @IsArray({ message: '海报必须是一个字符串数组' })
  @IsOptional()
  posters?: string[];
}

export class UpdateHeroDto {
  @IsInt({ message: 'ID必须是一个整数' })
  @IsNotEmpty({ message: 'ID不能为空' })
  id: number;

  @IsString()
  @IsNotEmpty()
  @Length(1, 20, {
    message: '英雄名长度必须在$constraint1到$constraint2之间',
  })
  name: string;

  @IsString({ message: '上线时间必须是一个字符串' })
  @IsNotEmpty()
  landingDate: string;

  @IsString({ message: '版本强度必须是一个字符串' })
  @IsNotEmpty()
  versionStrength: string;

  @IsArray({ message: '英雄定位必须是一个字符串数组' })
  @IsNotEmpty()
  heroLocation: string[];

  @IsArray({ message: '海报必须是一个字符串数组' })
  @IsOptional()
  posters?: string[];
}

export class DeleteHeroDto {
  @IsInt({ message: 'ID必须是一个整数' })
  @IsNotEmpty({ message: 'ID不能为空' })
  id: number;
}
